package com.shigen.demo.entity;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.Version;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.shigen.demo.util.serializer.CustomFileSizeSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
import lombok.experimental.Accessors;

/**
 * base_user_file
 *
 * @author
 */
@ApiModel(value = "com.shigen.demo.entity.BaseUserFile用户文件表")
@Data
@Accessors(chain = true)
public class BaseUserFile implements Serializable {

  /**
   * 自增的id
   */
  @ApiModelProperty(value = "自增的id")
  @TableId(type = IdType.AUTO)
  private Long id;

  /**
   * 文件的唯一标识
   */
  @ApiModelProperty(value = "文件的唯一标识")
  private String unionId;

  /**
   * 父文件夹
   */
  @ApiModelProperty(value = "父文件夹")
  private String parentId;

  /**
   * 上传用户id
   */
  @ApiModelProperty(value = "上传用户id")
  private Long uploadUserId;

  /**
   * 文件名
   */
  @ApiModelProperty(value = "文件名")
  private String name;

  /**
   * 文件大小
   */
  @ApiModelProperty(value = "文件大小")
  @JsonSerialize(using = CustomFileSizeSerializer.class)
  private Long size;

  /**
   * 上传用户名
   */
  @ApiModelProperty(value = "上传用户名")
  private String uploadUserName;

  /**
   * 文件类型-后缀
   */
  @ApiModelProperty(value = "文件类型-后缀")
  private String type;

  /**
   * 文件存储地址
   */
  @ApiModelProperty(value = "文件存储地址")
  private String url;

  /**
   * 文件备注
   */
  @ApiModelProperty(value = "文件备注")
  private String note;

  /**
   * 是否删除
   */
  @ApiModelProperty(value = "是否删除")
  @TableLogic
  private Boolean isDel;

  /**
   * 是否所有人可见
   */
  @ApiModelProperty(value = "是否所有人可见")
  private Boolean isPublic;

  /**
   * 创建时间
   */
  @ApiModelProperty(value = "创建时间")
  @TableField(fill = FieldFill.INSERT)
  private Date createTime;

  /**
   * 更新时间
   */
  @ApiModelProperty(value = "更新时间")
  @Version
  @TableField(fill = FieldFill.INSERT_UPDATE)
  private Date updateTime;

  private static final long serialVersionUID = 1L;
}
